#!/bin/bash

function usage ()
{
echo 1>&2
echo "Usage: miff2avi [-f frames_per_second]" 1>&2
echo "                 [-o outfile.avi]" 1>&2
echo "                 file.miff" 1>&2
echo 1>&2
echo "  Converts file.miff to file.avi (or outfile.avi if -o is given)" 1>&2
echo "  using frames_per_second as framerate (defaults to 25)" 1>&2
echo 1>&2
echo "  Assumes mjpeg tools and \"convert\" (ImageMagick) are installed." 1>&2
echo  1>&2
echo "  file.miff should contain all the frames to be animated. " 1>&2
echo "  $0 does not accept a file list (e.g. file*.miff) as an argument. " 1>&2
echo 1>&2
echo "  This script was originally written by Ulrich Oelmann <Ulrich.Oelmann@iws.uni-stuttgart.de>. " 1>&2
echo "  See http://opendx.npaci.edu/mail/opendx-users/2004.10/msg00026.html" 1>&2
echo  1>&2
exit 0
}

if [ $[$# < 1 ] = 1 ]; then
    usage
fi

FOPTION=25;
OOPTION="";

while getopts "f:o:" OPTION; do
    case $OPTION in
	f) FOPTION=$OPTARG;;
	o) OOPTION=$OPTARG;;
	?) usage;;
    esac
done

shift $[$OPTIND-1]

if [ x"$OOPTION" == "x" ]; then
    OOPTION=`basename $1 .miff`
    OOPTION=`basename $OOPTION .MIFF`
    OOPTION=`dirname $1`/$OOPTION".avi"
fi

TMPDIR=`mktemp -d miff2xvid.XXXXXXXXXX`
mkdir -p $TMPDIR

declare -i FRAMES X Y

echo "######### Analyzing $1"

IDENTIFY=`identify -format "%n %w %h" $1 | \
    tail -n 2 | head -n 1`
FRAMES=`echo $IDENTIFY | gawk '{ print $1 }'`
X=`echo $IDENTIFY | gawk '{ print $2 }'`
Y=`echo $IDENTIFY | gawk '{ print $3 }'`

FRAMES=$(( FRAMES-1 ))


if [ $(( $Y % 2 )) -eq 1 ]; then
    JOPTION=1
else
    JOPTION=0
fi;


if [ $(( $X % 2 )) -eq 1 ]; then
    JOPTION=$JOPTION",1,0,0"
else
    JOPTION=$JOPTION",0,0,0"
fi;


echo "######### Extracting $(( FRAMES+1 )) frames out of $1"

convert -quality 9 $1 $TMPDIR/frame.ppm

echo "######### Encoding animation to $OOPTION"
echo

ppmtoy4m -F $FOPTION:1 $TMPDIR/frame.ppm | yuv2lav -q 100 -f a -o $OOPTION


#convert -quality 9 $1 $TMPDIR/frame.png
# test later when transcode and other libraries become available
#for ZAHL in `seq 0 $FRAMES`; do
#  mv $TMPDIR/frame.png.$ZAHL $TMPDIR/frame.$ZAHL.png
#  echo $TMPDIR/frame.$ZAHL.png >> $TMPDIR/frameliste.txt
#done
#transcode -i $TMPDIR/frameliste.txt \
#    -x imlist,null \
#    -g "$X"x"$Y" \
#    -z \
#    -j $JOPTION \
#    -y xvid4,null \
#    -f $FOPTION \
#    -w 1500 \
#    -H 0 \
#    -o $OOPTION


rm -rf $TMPDIR

# version
# $Id: miff2avi 4590 2006-09-22 20:37:27Z tan2 $

# End of file
